﻿//***********************************************************************************//
// Autor:  		                								     				*//
//***********************************************************************************//
// Función que realiza la búsqueda rápida sobre el campo en el que se este      	*//
// utilizando. Básicamente sobre un input, la persona escribe dos o más caracteres  *//
// y el script permite realizar una consulta asíncrona con la base de datos y       *//
// obtener los datos que se mostraran en un dropdownlist del campo.                 *//
// _________________________________________________________________________________*//

jQuery(document).ready(function ($) {

    var marcamodeloid;
    var proveedorid;

    $("#CargoId_Visible").autocomplete({
        source: function (request, response) {
            // Se define la función que llama al controlador Cargo y su acción GetCargos
            $.ajax({
                url: '/Cargo/GetCargos', type: "POST", dataType: "json",

                // La consulta será hecha por el parametro usado en el método
                data: { query: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            // El label contendra el listado de parámetros de los Cargos obtenidos desde BD
                            label: item.Empleado + ", "
                                    + item.DivisionId + ", "
                                    + item.Cargo + ", "
                                    + item.CecoId,
                            // Value contendrá el nombre del Cargo
                            value: item.Cargo,
                            // id contendrá el id del Cargo
                            id: item.CargoId,
                            // cecoid contendrá el id del Ceco
                            cecoId: item.CecoId,
                            // divisionId contendrá el id de la Division
                            divisionId: item.DivisionId,
                            // empleado contendrá el nombre del empleado
                            empleado: item.Empleado,
                            // ceco contendrá el nombre del Ceco
                            ceco: item.Ceco,
                            // correo contendrá el correo
                            correo: item.Correo
                        };
                    }))
                }
            })
        },
        minLength: 1, // Requiere al menos un caracter del usuario
        select: function (event, ui) {
            // Se colocará el CargoId que se ha obtenido desde la BD
            $('#CargoId').val(ui.item.id);
            // Se colocará el nombre que se ha obtenido desde la BD
            $('#nombre').val(ui.item.empleado);
            // Se colocará el ceco_id que se ha obtenido desde la BD
            $("#ceco_id").val(ui.item.cecoId);
            // Se colocará el ceco_id_Visible que se ha obtenido desde la BD
            $("#ceco_id_Visible").val(ui.item.ceco);
            // Se colocará el DivisionId que se ha obtenido desde la BD
            $("#DivisionId").val(ui.item.divisionId);
            // Se colocará el email que se ha obtenido desde la BD
            $("#email").val(ui.item.correo);
        }
    });

    $("#ceco_id_Visible").autocomplete({
        source: function (request, response) {
            // Se define la función que llama al controlador Ceco y su acción GetCecos
            $.ajax({
                url: '/Ceco/GetCecos', type: "POST", dataType: "json",

                // La consulta será hecha por el parametro usado en el método
                data: { query: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            // El label contendra el listado de parámetros de los Cecos obtenidos desde BD
                            label: item.Nombre + ", "
                                    + item.Codigo,
                            // Value contendrá el nombre del Ceco
                            value: item.Nombre,
                            // El id contendrá el valor del codigo perteneciente a los cecos
                            id: item.Codigo
                        };
                    }))
                }
            })
        },
        minLength: 1, // Requiere al menos un caracter del usuario
        select: function (event, ui) {
            // Se colocará el ceco_id que se ha obtenido desde la BD
            $('#ceco_id').val(ui.item.id);
        }
    });

    var pathname = window.location.pathname;
    var found = pathname.indexOf("derp");

    if (found == -1) {
        $("#PadreId").autocomplete({
            source: function (request, response) {
                // Se define la función que llama al controlador BienInformatico y su acción GetSeriales
                $.ajax({
                    url: '/BienInformatico/GetSeriales', type: "POST", dataType: "json",

                    // La consulta será hecha por el parametro usado en el método
                    data: { query: request.term },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return {
                                // El label contendra el listado de parámetros de Bienes Informaticos obtenidos desde BD
                                label: item.BienInformaticoId + ", "
                                    + item.ClaseObjecto + ", "
                                    + item.Estado + ", "
                                    + item.TipoBien + ", "
                                    + item.MarcaModelo,
                                // Value contendrá el valor de la Bien Informatico
                                value: item.BienInformaticoId,
                                // El nanf contendrá el valor nanf perteneciente a los seriales
                                nanf: item.NAnexo,
                                // El nena contendrá el valor nena perteneciente a los seriales
                                nena: item.NEtiq
                            };
                        }))
                    }
                })
            },
            minLength: 1, // Requiere al menos un caracter del usuario
            select: function (event, ui) {
                // Se colocará en el id nanf el valor que se ha obtenido desde la BD
                $('#nanf').val(ui.item.nanf);
                // Se colocará en el id nena el id que se ha obtenido desde la BD
                $('#nena').val(ui.item.nena);
            }
        });
    } else {
        $("#PadreId").autocomplete({
            source: function (request, response) {
                // Se define la función que llama al controlador BienInformatico y su acción GetSerialesAsignacion
                $.ajax({
                    url: '/BienInformatico/GetSerialesAsignacion', type: "POST", dataType: "json",

                    // La consulta será hecha por el parametro usado en el método
                    data: { query: request.term },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return {
                                // El label contendra el listado de parámetros de Bienes Informaticos obtenidos desde BD
                                label: item.BienInformaticoId + ", "
                                    + item.ClaseObjecto + ", "
                                    + item.Estado + ", "
                                    + item.TipoBien + ", "
                                    + item.MarcaModelo,
                                // Value contendrá el valor de la Bien Informatico
                                value: item.BienInformaticoId,
                                // El nanf contendrá el valor nanf perteneciente a los seriales
                                nanf: item.NAnexo,
                                // El nena contendrá el valor nena perteneciente a los seriales
                                nena: item.NEtiq
                            };
                        }))
                    }
                })
            },
            minLength: 1, // Requiere al menos un caracter del usuario
            select: function (event, ui) {
                // Se colocará en el id nanf el valor que se ha obtenido desde la BD
                $('#nanf').val(ui.item.nanf);
                // Se colocará en el id nena el id que se ha obtenido desde la BD
                $('#nena').val(ui.item.nena);
            }
        });
    }

    $("#MarcaModeloId_Visible").autocomplete({
        source: function (request, response) {
            // Se define la función que llama al controlador MarcaModelo y su acción GetMarcasModelos
            $.ajax({
                url: '/MarcaModelo/GetMarcasModelos', type: "POST", dataType: "json",

                // La consulta será hecha por el parametro usado en el método
                data: { query: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            // El label contendra el listado de parámetros de MarcaModelos obtenidos desde BD
                            label: item.Modelo + ", "
                                    + item.Marca + ", "
                                    + item.ClaseObjeto,
                            // Value contendrá el valor de la Marca Modelo
                            value: item.Modelo,
                            // El id contendrá el id de la Marca Modelo
                            id: item.MarcaModeloId
                        };
                    }))
                }
            })
        },
        minLength: 1, // Requiere al menos un caracter del usuario
        select: function (event, ui) {
            // Se almacena en marcamodelosid el id de la MarcaModelo
            marcamodeloid = ui.item.id;
        }
    });

    $("#localidad_id_Visible").autocomplete({
        source: function (request, response) {
            // Se define la función que llama al controlador Localidad y su acción GetLocalidades
            $.ajax({
                url: '/Localidad/GetLocalidades', type: "POST", dataType: "json",

                // La consulta será hecha por el parametro usado en el método
                data: { query: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            // El label contendra el listado de parámetros de Localidades obtenidos desde BD
                            label: item.Nombre + ", "
                                    + item.LocalidadId,
                            // Value contendrá el nombre de las Localidades
                            value: item.Nombre,
                            // El id contendrá el id de la Localidad
                            id: item.LocalidadId
                        };
                    }))
                }
            })
        },
        minLength: 1, // Requiere al menos un caracter del usuario
        select: function (event, ui) {
            // Se colocará en el id localidad_id el id que se ha obtenido desde la BD
            $('#localidad_id').val(ui.item.id);
        }
    });

    $("#SearchTipo").autocomplete({
        source: function (request, response) {
            // Se define la función que llama al controlador TipoBien y su acción GetTipoBienes
            $.ajax({
                url: '/TipoBien/GetTipoBienes', type: "POST", dataType: "json",

                // La consulta será hecha por el parametro usado en el método
                data: { query: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            // Value contendrá el nombre del Tipo de Bien
                            label: item.Nombre,
                            // Value contendrá el nombre del Tipo de Bien
                            value: item.Nombre,
                            // El id contendrá el id el Tipo de Bien
                            id: item.TipoBienId
                        };
                    }))
                }
            })
        },
        minLength: 1 // Requiere al menos un caracter del usuario
    });

    $("#SearchEst").autocomplete({
        source: function (request, response) {
            // Se define la función que llama al controlador Estado y su acción GetEstados
            $.ajax({
                url: '/Estado/GetEstados', type: "POST", dataType: "json",

                // La consulta será hecha por el parametro usado en el método
                data: { query: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            // El label contendra el listado de parámetros de Localidades obtenidos desde BD
                            label: item.Nombre,
                            // Value contendrá el nombre de los Estados
                            value: item.Nombre,
                            // El id contendrá el id de la Estado
                            id: item.EstadoId
                        };
                    }))
                }
            })
        },
        minLength: 1 // Requiere al menos un caracter del usuario
    });

    $("#SearchLocalidad").autocomplete({
        source: function (request, response) {
            // Se define la función que llama al controlador Localidad y su acción GetLocalidades
            $.ajax({
                url: '/Localidad/GetLocalidades', type: "POST", dataType: "json",

                // La consulta será hecha por el parametro usado en el método
                data: { query: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            // El label contendra el listado de parámetros de Localidades obtenidos desde BD
                            label: item.LocalidadId + ", "
                                    + item.Nombre,
                            // Value contendrá el nombre de las Localidades
                            value: item.LocalidadId,
                            // El id contendrá el id de la Localidad
                            id: item.LocalidadId
                        };
                    }))
                }
            })
        },
        minLength: 1 // Requiere al menos un caracter del usuario
    });

    $("#SearchClaseObjeto").autocomplete({
        source: function (request, response) {
            // Se define la función que llama al controlador ClaseObjeto y su acción GetClaseObjeto
            $.ajax({
                url: '/ClaseObjeto/GetClaseObjeto', type: "POST", dataType: "json",

                // La consulta será hecha por el parametro usado en el método
                data: { query: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            // Value contendrá el nombre del Clase Objeto
                            label: item.Nombre,
                            // Value contendrá el nombre del Clase Objeto 
                            value: item.Nombre,
                            // El id contendrá el id de la Clase Objeto 
                            id: item.ClaseObjetoId
                        };
                    }))
                }
            })
        },
        minLength: 1 // Requiere al menos un caracter del usuario
    });

    $("#ProveedorId_Visible").autocomplete({
        source: function (request, response) {
            // Se define la función que llama al controlador Proveedor y su acción GetProveedores
            $.ajax({
                url: '/Proveedor/GetProveedores', type: "POST", dataType: "json",

                // La consulta será hecha por el parametro usado en el método
                data: { query: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            // El label contendra el listado de parámetros Proveedores obtenidos desde BD
                            label: item.Nombre + ", "
                                    + item.Contacto + ", "
                                    + item.Ubicacion + ", "
                                    + item.Descripcion + ", "
                                    + item.Correo,
                            // Value contendrá el nombre de los Proveedores
                            value: item.Nombre,
                            // El id contendrá el id del Proveedor
                            id: item.ProveedorId
                        };
                    }))
                }
            })
        },
        minLength: 1, // Requiere al menos un caracter del usuario
        select: function (event, ui) {
            // Se almacena en proveedorId el id del Proveedor
            proveedorid = ui.item.id;
        }
    });
    $("#nanf").autocomplete({
        source: function (request, response) {
            // Se define la función que llama al controlador BienInformatico y su acción GetLastAnexo
            $.ajax({
                url: '/BienInformatico/GetLastAnexo', type: "POST", dataType: "json",

                // La consulta será hecha por el parametro usado en el método
                data: { query: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        // El id nena va a tener el valor item
                        $("#nena").val(item);
                    }))
                }
            })
        }
    });

    // Cuando se presione el boton de Submit para ese form se coloca
    // los diversos valores pertencecientes a la MarcaModelo o
    // Proveedor
    $('input[type=submit]').click(function () {
        if (marcamodeloid != undefined) {
            if ($('#MarcaModeloId_Visible').val() != "")
                $('#MarcaModeloId').val(marcamodeloid);
        } else {
            if ($('#MarcaModeloId').val() != 0) {
                if ($('#MarcaModeloId_Visible').val() == "")
                    $('#MarcaModeloId').val(null);
            } else
                $('#MarcaModeloId').val(null);
        }
        if (proveedorid != undefined) {
            if ($('#ProveedorId_Visible').val() != "")
                $('#ProveedorId').val(proveedorid);
        } else {
            if ($('#ProveedorId').val() != 0) {
                if ($('#ProveedorId_Visible').val() == "")
                    $('#ProveedorId').val(null);
            } else
                $('#ProveedorId').val(null);
        }

    });
});